/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador.Service.Produccion;

import Controlador.Bean.Produccion.ProduccionReal;
import Data.config.SessionFac;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;

/**
 *
 * @author César
 */
public class ServicioAsignacionReal {
    SqlSession sqlsession;
    
    public ServicioAsignacionReal(){
        
    }

    public int verificarSalidaAlmacen(String idSolicitudMovimiento){
        this.sqlsession = SessionFac.SessionFactory().openSession();
        int cantidad;
        cantidad = Integer.parseInt((String)sqlsession.selectOne("Data.Produccion.ServicioAsignacionReal.verificarProductos", idSolicitudMovimiento));
        sqlsession.close();
        return cantidad;
    }
    
    
    public List<ProduccionReal> obtenerServicioAsignacionRealMes(){
        this.sqlsession = SessionFac.SessionFactory().openSession();
        List<ProduccionReal> ar;
        ar = (List)sqlsession.selectList("Data.Produccion.ServicioAsignacionReal.seleccionarTodoMes");
        sqlsession.close();
        return ar;
    }
    
       
       
       
       public void agregar(List<ProduccionReal> produccion){
        SqlSession sqlsession= SessionFac.SessionFactory().openSession();
     
        for(int i=0; i<produccion.size(); i++){
             produccion.get(i).setIdAsignacionReal(this.obtenerIdSiguienteProReal(sqlsession));
        
            sqlsession.insert("Data.Produccion.ServicioAsignacionReal.guardar", produccion.get(i));
        }
        sqlsession.commit();
        sqlsession.close();
    }
       
       
          public String obtenerIdSiguienteProReal(SqlSession sqlsession){
           try{     
         String id= (String)sqlsession.selectOne("Data.Produccion.ServicioAsignacionReal.getNextCodigo");
        
        if(id!=null){
        int cod= Integer.parseInt(id.substring(3)) + 1;
        
        String defecto= "000000";
        String temp= defecto.substring(0, defecto.length()-String.valueOf(cod).length()).concat(String.valueOf(cod));

        id = (id.substring(0,3).concat(temp));}
        
        else{
        id = "PRE000001"; 
        
        }
           
        return id;
           }
           catch(Exception e){
            return null;
           }
    }
     
       
       
    
    public List<ProduccionReal> obtenerServicioAsignacionReal(Date fecha, String idTurno, String tma) {
        this.sqlsession = SessionFac.SessionFactory().openSession();
        HashMap<String, String> hm = new HashMap<>();
        hm.put("idTurno", idTurno);
        hm.put("fecha", new SimpleDateFormat("dd MM yyyy").format(fecha));
        hm.put("tma", tma);
        List<ProduccionReal> ar;
        ar = (List)sqlsession.selectList("Data.Produccion.ServicioAsignacionReal.seleccionarTodo", hm);
        sqlsession.close();
        for(int i=0; i<ar.size(); i++){
            ar.get(i).setCantidadReal(ar.get(i).getCantidadFicticia());
            ar.get(i).setMermaReal(ar.get(i).getMermaFicticia());
        }
        return ar;
    }
    
    public List<HashMap<String,Object>> seleccionarProdFase(String idProducto){
        sqlsession = SessionFac.SessionFactory().openSession();
        List<HashMap<String, Object>> hm;
        hm = (List)sqlsession.selectList("Data.Produccion.ServicioAsignacionReal.seleccionarProdFase", idProducto);
        sqlsession.close();
        return hm;
    }
            
    
    public List<HashMap<String, Object>> obtenerIngredientes(String idProd){
        sqlsession = SessionFac.SessionFactory().openSession();
        List<HashMap<String, Object>> hm;
        hm = (List)sqlsession.selectList("Data.Produccion.ServicioAsignacionReal.seleccionarIngredientes", idProd);
        sqlsession.close();
        return hm;
    }
    
}
